#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include<time.h>
//插入排序
void InsertSort(int* a,int n);

//希尔排序
void ShellSort(int* a,int n);

//快速排序（Hoare）(优化，少于10个数，用插入排序)
void QuickSort1(int* a,int left,int right);

//快速排序（挖坑法）
void QuickSort2(int* a,int left,int right);

//快速排序（前后指针）
void QuickSort3(int* a,int left,int right);

//快速排序（非递归借助栈实现）（也可以用队列）
void QuickSortNotR(int* a,int left,int right);

//冒泡排序
void BubbleSort(int* a, int n);

//堆排序
void AdjustDown(int* a, int parent, int n);
void HeapSort(int* a, int n);

//选择排序
void SelectSort(int* a, int n);

//归并排序
void MergeSort(int* a,int n);

//归并排序（非递归）
void MergeSortNotR(int* a,int n);

//计数排序
void CountSort(int* a,int n);

//打印
void PrintArray(int* a,int n);

//三数取中法 选择k
int GetMidi(int* a,int left,int right);